<?php

namespace app\common;
use Psr\Log\AbstractLogger;
/**
 * This Logger can be used to avoid conditional log calls.
 *
 * Logging should always be optional, and if no logger is provided to your
 * library creating a NullLogger instance to have something to throw logs at
 * is a good way to avoid littering your code with `if ($this->logger) { }`
 * blocks.
 */
class Log extends AbstractLogger
{
    protected $model;
    /**
     * 
     */
    public function __construct($_model = null)
    {
        $this->model = $_model;
    }
    public function setModel($_model){
        $this->model = $_model;
    }
    /**
     * Logs with an arbitrary level.
     *
     * @param mixed  $level
     * @param string $message
     * @param array  $context
     *
     * @return void
     */
    public function log($level, $message, array $context = array())
    {
        if ($this->model) {
            //接口在规则中
            if(config('rule')[$context['rule']])
            {
                $context['ip'] = getIp();
                $context['url'] = getUrl();
                $context['type'] = config('rule')[$context['rule']] ? config('rule')[$context['rule']] : 'other';
                $context['level'] = $level;
                $context['message'] = $message;
                unset($context['comment']['token']);
                $context['comment'] = json_encode($context['comment'], JSON_UNESCAPED_UNICODE);
                return $this->model->add($context); 
            }
        }
    }
}
